$(function () {
    //保存最近一次点击的标准问题
    window.lastStandQustion = '';

    //保存最近一次点击的标准问题ID
    window.lastStandQId = -1;

    //保存最近一次点击的边界问题
    window.lastBoundQuestion = '';

    //保存最近一次点击的边界问题ID
    window.lastBoundQId = -1;

    //项目名称
    window.project_name = '';

    //1.初始化标准问题Table
    var oTable = new TableInit();
    oTable.Init();

    //2.初始化标准问操作Button的点击事件
    var standaryButton = new StandardButtonInit();
    standaryButton.Init();

    //初始化边界问题Table
    var boundaryTable = new BoundaryInit();
    boundaryTable.Init();

    //初始化边界问题操作Button的点击事件
    var boundaryButton = new BoundaryButtonInit();
    boundaryButton.Init();

    //初始化扩写问题Table
    var editableTable = new EditableInit();
    editableTable.Init();

    //初始化扩写问题操作Button的点击事件
    var editableButton = new EditableButtonInit();
    editableButton.Init();

    //修改表宽度
    var tables = document.getElementsByClassName('bootstrap-table');
    tables[0].style.width = '380px';
    tables[1].style.width = '360px';
    tables[1].style.marginLeft = '20px';
    tables[2].style.marginLeft = '20px';
    tables[2].style.width = '550px';

    //选择项目Button事件
    $('#project_conform').click(function () {
        window.project_name = $('#editable-select').val();
        $.ajax({
            type: 'GET',
            url: '/getquestion',
            cache: false,
            data: {
                appid: window.project_name,
                type: 'sq'
            },
            error: function () {
            },
            success: function (res) {
                if (res.status == 'true' && res.data.length) {
                    $('#tb_standard').bootstrapTable('load', res.data);
                }
                else {
                    toastr.error(res.desc);
                }
            }
        });
    });
});


var TableInit = function () {
    var oTableInit = new Object();
    //初始化Table
    oTableInit.Init = function () {
        $('#tb_standard').bootstrapTable({
            //url: '/getdata', //请求后台的URL（*）
            //method: 'get', //请求方式（*）
            data: [{'standQ': '', 'number': ''}],
            toolbar: '#toolbar', //工具按钮用哪个容器
            striped: false, //是否显示行间隔色
            cache: false, //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
            pagination: true, //是否显示分页（*）
            sortable: true, //是否启用排序
            sortOrder: "asc", //排序方式
            //queryParams: oTableInit.queryParams,//传递参数（*）
            //sidePagination: "client", //分页方式：client客户端分页，server服务端分页（*）
            pageNumber: 1, //初始化加载第一页，默认第一页
            pageSize: 10, //每页的记录行数（*）
            pageList: [10, 25, 50, 100], //可供选择的每页的行数（*）
            search: true, //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
            strictSearch: false,  //false -->模糊搜索
            showColumns: true, //是否显示所有的列
            //showRefresh: true, //是否显示刷新按钮
            //showToggle:true, //是否显示详细视图和列表视图的切换按钮
            //minimumCountColumns: 2, //最少允许的列数
            clickToSelect: false, //是否启用点击选中行
            height: 527, //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
            uniqueId: "ID", //每一行的唯一标识，一般为主键列
            cardView: false, //是否显示详细视图
            detailView: false, //是否显示父子表
            columns: [{
                checkbox: true,
            },
                {
                    field: 'number',
                    title: '序号',
                    sortable: true,
                    align: 'center',
                    width: 50
                },
                {
                    filed: 'id',
                    title: 'ID',
                    visible: false
                },
                {
                    field: 'standQ',
                    title: '标准问题',
                    sortable: true,
                    editable: {
                        type: 'textarea',
                        title: '标准问题',
                        validate: function (v) {
                            if (!v) return '标准问题不能为空';
                        }
                    }
                }],
            onEditableSave: function (field, row, oldValue, $el) {
                $.ajax({
                    type: 'GET',
                    url: '/modifyquestion',
                    data: {
                        oldValue: oldValue,
                        newValue: row.standQ,
                        type: 'sq'
                    },
                    error: function () {
                    },
                    success: function (res) {
                        var staus = res.status;
                    }
                });
                window.lastStandQustion = row.standQ;
                window.lastStandQId = row.id;
            }
        });
    };

    return oTableInit;
};

var BoundaryInit = function () {
    var oTableInit = new Object();
    //初始化Table
    oTableInit.Init = function () {
        $('#tb_boundary').bootstrapTable({
            //url: '/getdata', //请求后台的URL（*）
            //method: 'get', //请求方式（*）
            data: [{'boundQ': ''}],
            toolbar: '#toolbar1', //工具按钮用哪个容器
            striped: false, //是否显示行间隔色
            cache: false, //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
            pagination: true, //是否显示分页（*）
            sortable: true, //是否启用排序
            sortOrder: "asc", //排序方式
            //queryParams: oTableInit.queryParams,//传递参数（*）
            //sidePagination: "client", //分页方式：client客户端分页，server服务端分页（*）
            pageNumber: 1, //初始化加载第一页，默认第一页
            pageSize: 10, //每页的记录行数（*）
            pageList: [10, 25, 50, 100], //可供选择的每页的行数（*）
            search: true, //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
            strictSearch: false,  //false -->模糊搜索
            //showColumns: true, //是否显示所有的列
            //showRefresh: true, //是否显示刷新按钮
            //showToggle:true, //是否显示详细视图和列表视图的切换按钮
            //minimumCountColumns: 2, //最少允许的列数
            clickToSelect: false, //是否启用点击选中行
            height: 527, //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
            uniqueId: "ID", //每一行的唯一标识，一般为主键列
            cardView: false, //是否显示详细视图
            detailView: false, //是否显示父子表
            columns: [
                {
                    checkbox: true,
                },
                {
                    filed: 'id',
                    title: 'ID',
                    visible: false
                },
                {
                    field: 'boundQ',
                    title: '边界问题',
                    sortable: true,
                    editable: {
                        type: 'textarea',
                        title: '边界问题',
                        validate: function (v) {
                            if (!v) return '边界问题不能为空';
                        }
                    }
                }
            ],
            onEditableSave: function (field, row, oldValue, $el) {
                $.ajax({
                    type: 'GET',
                    url: '/modifyquestion',
                    data: {
                        oldValue: oldValue,
                        newValue: row.boundQ,
                        type: 'bq'
                    },
                    error: function () {
                    },
                    success: function (res) {
                        var staus = res.status;
                    }
                });
                window.lastBoundQuestion = row.boundQ;
                window.lastBoundQId = row.id;
            }
        });
    };

    return oTableInit;
};

var EditableInit = function () {
    var oTableInit = new Object();
    //初始化Table
    oTableInit.Init = function () {
        $('#tb_editable').bootstrapTable({
            //url: '/getdata', //请求后台的URL（*）
            //method: 'get', //请求方式（*）
            data: [{'class': '', 'editQ': ''}],
            toolbar: '#toolbar2', //工具按钮用哪个容器
            striped: false, //是否显示行间隔色
            cache: false, //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
            pagination: true, //是否显示分页（*）
            sortable: true, //是否启用排序
            sortOrder: "asc", //排序方式
            queryParams: oTableInit.queryParams,//传递参数（*）
            //sidePagination: "client", //分页方式：client客户端分页，server服务端分页（*）
            pageNumber: 1, //初始化加载第一页，默认第一页
            pageSize: 50, //每页的记录行数（*）
            pageList: [50, 100, 150, 200], //可供选择的每页的行数（*）
            search: true, //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
            strictSearch: false,  //false -->模糊搜索
            showColumns: true, //是否显示所有的列
            //showRefresh: true, //是否显示刷新按钮
            //showToggle:true, //是否显示详细视图和列表视图的切换按钮
            //minimumCountColumns: 2, //最少允许的列数
            clickToSelect: false, //是否启用点击选中行
            height: 527, //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
            uniqueId: "ID", //每一行的唯一标识，一般为主键列
            cardView: false, //是否显示详细视图
            detailView: false, //是否显示父子表
            columns: [{
                checkbox: true,
            },
                {
                    filed: 'id',
                    title: 'ID',
                    visible: false
                },
                {
                    field: 'number',
                    title: '序号',
                    align: 'center',
                    width: 20,
                    formatter: function (value, row, index) {
                        return index + 1;
                    }
                },
                {
                    field: 'class',
                    title: '类别',
                    sortable: true,
                    width: 20
                },
                {
                    field: 'editQ',
                    title: '用户问题',
                    sortable: true,
                    editable: {
                        type: 'textarea',
                        title: '用户问题',
                        validate: function (v) {
                            if (!v) return '用户问题不能为空';
                        }
                    }
                }],
            onEditableSave: function (field, row, oldValue, $el) {
                $.ajax({
                    type: 'GET',
                    url: '/modifyquestion',
                    data: {
                        oldValue: oldValue,
                        newValue: row.editQ,
                        type: row.class.toLowerCase()
                    },
                    error: function () {
                    },
                    success: function (res) {
                        var staus = res.status;
                    }
                });
            }
        });
    };

    // function operateFormatter(value, row, index) {
    //     return [row.editQ,
    //         '<button type="button" class="RoleOfA btn btn-default  btn-sm">A权限</button>',
    //     ].join('');
    // }
    return oTableInit;
};

//标准问题table按钮初始化
var StandardButtonInit = function () {
    var oInit = new Object();
    var postdata = {};
    var openModal = $('#btn_add');
    oInit.Init = function () {
        //初始化页面上面的按钮事件
        var table = $('#tb_standard'),
            remove = $('#btn_delete'),
            selections = [];
        table.on('check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table', function () {
            remove.prop('disabled', !table.bootstrapTable('getSelections').length);
            selections = getIdSelections();
        });

        table.on('click-row.bs.table', function (e, row, element) {
            //bootstrap table支持5中表格的行背景色，分别是'active', 'success', 'info', 'warning', 'danger'这五种
            $('.success').removeClass('success');//去除之前选中的行的，选中样式
            $(element).addClass('success');//添加当前选中的 success样式用于区别

            $.ajax({
                type: 'GET',
                url: '/getquestion',
                async: false,
                data: {
                    parentId: row.id,
                    type: 'bq',
                    appid: window.project_name
                },
                error: function () {
                },
                success: function (res) {
                    var status = res.status;
                    if (status == 'true') {
                        if (res.data.length) {
                            $('#tb_boundary').bootstrapTable('load', res.data);
                        }
                        else {
                            $('#tb_boundary').bootstrapTable('load', [{'boundQ': ''}]);
                        }
                    } else {
                        $('#tb_boundary').bootstrapTable('load', [{'boundQ': ''}]);
                    }
                }
            });

            window.lastStandQustion = row.standQ;
            window.lastStandQId = row.id;
            //更新table2的表头
            setTimeout(function () {
                var containers = document.getElementsByClassName('fixed-table-container');
                var element = containers[1].getElementsByClassName('th-inner sortable');
                element[0].innerHTML = row.standQ;
            }, 100)

        });

        //批量删除按钮事件
        remove.click(function () {
            var ids = getIdSelections();
            console.log(ids);
            table.bootstrapTable('remove', {
                field: 'standQ',
                values: ids
            });
            remove.prop('disabled', true);

            $.ajax({
                type: 'POST',
                url: '/deletequestion',
                cache: false,
                contentType: 'application/json',
                data: JSON.stringify({
                    deleteValue: ids,
                    type: 'sq'
                }),
                error: function () {
                },
                success: function (res) {
                    var status = res.status;
                    if (status == 'true') {
                        toastr.success('删除数据成功');
                    } else {
                        toastr.error('删除数据失败');
                    }
                }
            });
        });

        function getIdSelections() {
            return $.map(table.bootstrapTable('getSelections'), function (row) {
                return row.standQ;
            });
        }

        //打开模态窗口事件
        openModal.click(function () {
            var bodyContent = '';
            document.getElementById('sqBody').innerHTML = '<div class="input-group" style="margin-bottom:10px"> <label>SQ:</label> <input name="sq" type="text" ' +
                'style="width: 300px; height: 28px" autocomplete="off"> </div> ' +
                '<div class="input-group" style="margin-left:24px"> <textarea name="answer" placeholder="Answer" rows="5" cols="40" ' +
                'autocomplete="off"></textarea></div>';
            $('#myModal').modal('show');
        });

        //模态框内的新增按钮事件
        $('#myModal').on('click', '#addSq', function () {
            var sqInput = '<div class="input-group" style="margin-left:24px"> <textarea name="answer" placeholder="Answer" rows="5" cols="40" ' +
                'autocomplete="off"></textarea></div>';
            var node = document.createElement('div');
            node.innerHTML = sqInput;
            document.getElementById('sqBody').appendChild(node);
        });

        //模框内的确认按钮事件
        $('#myModal').on('click', '#confirm', function () {
            $('#myModal').modal('hide');
            var standQs = document.getElementById('sqBody').getElementsByTagName('input');
            var answers = document.getElementById('sqBody').getElementsByTagName('textarea');

            var addAnswers = [];
            for (var i = 0; i < answers.length; i++) {
                if (answers[i].value != '') {
                    addAnswers.push(answers[i].value);
                }
            }
            if (addAnswers.length == 0) {
                toastr.warning('请填写标准问题对应答案');
                return;
            }

            if (standQs[0].value == '') {
                toastr.warning('请填写标准问题');
                return;
            }

            $.ajax({
                type: 'POST',
                url: '/addquestion',
                cache: false,
                contentType: 'application/json',
                data: JSON.stringify({
                    addValue: [standQs[0].value],
                    type: 'sq',
                    answers: addAnswers,
                    appid: window.project_name
                }),
                error: function () {
                },
                success: function (res) {
                    var results = res.data;
                    if (res.status == 'true') {
                        for (var i in results) {
                            table.bootstrapTable('insertRow', {
                                index: 0,
                                row: {
                                    standQ: results[i].content,
                                    id: results[i].recordId,
                                    number: '0'
                                }
                            });
                        }
                        toastr.success('数据新增成功');
                    } else {
                        toastr.error(res.desc);
                        return;
                    }
                }
            });
        });
    };

    return oInit;
};

var BoundaryButtonInit = function () {
    var oInit = new Object();
    var postdata = {};
    var openModal = $('#btn_add1');
    oInit.Init = function () {
        //初始化页面上面的按钮事件
        var table = $('#tb_boundary'),
            remove = $('#btn_delete1'),
            selections = [];
        table.on('check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table', function () {
            remove.prop('disabled', !table.bootstrapTable('getSelections').length);
            selections = getIdSelections();
        });

        table.on('click-row.bs.table', function (e, row, element) {
            //bootstrap table支持5中表格的行背景色，分别是'active', 'success', 'info', 'warning', 'danger'这五种
            $('.success').removeClass('success');//去除之前选中的行的，选中样式
            $(element).addClass('success');//添加当前选中的 success样式用于区别

            $.ajax({
                type: 'GET',
                url: '/getquestion',
                async: false,
                data: {
                    parentId: row.id,
                    type: 'eq',
                    appid: window.project_name
                },
                error: function () {
                },
                success: function (res) {
                    var status = res.status;
                    if (status == 'true') {
                        if (res.data.length) {
                            $('#tb_editable').bootstrapTable('load', res.data);
                        }
                        else {
                            $('#tb_editable').bootstrapTable('load', [{'class': '', 'editQ': ''}]);
                        }

                    } else {
                        $('#tb_editable').bootstrapTable('load', [{'class': '', 'editQ': ''}]);
                    }
                }
            });

            window.lastBoundQuestion = row.boundQ;
            window.lastBoundQId = row.id;
            //更新table3的表头
            setTimeout(function () {
                var containers = document.getElementsByClassName('fixed-table-container');
                var element = containers[2].getElementsByClassName('th-inner sortable');
                element[1].innerHTML = row.boundQ;
            }, 100)
        });

        //批量删除按钮事件
        remove.click(function () {
            var ids = getIdSelections();
            table.bootstrapTable('remove', {
                field: 'boundQ',
                values: ids
            });
            remove.prop('disabled', true);

            $.ajax({
                type: 'POST',
                url: '/deletequestion',
                cache: false,
                contentType: 'application/json',
                data: JSON.stringify({
                    deleteValue: ids,
                    type: 'bq'
                }),
                error: function () {
                },
                success: function (res) {
                    var status = res.status;
                    if (status == 'true') {
                        toastr.success('删除数据成功');
                    } else {
                        toastr.error('删除数据失败');
                    }
                }
            });

        });

        function getIdSelections() {
            return $.map(table.bootstrapTable('getSelections'), function (row) {
                return row.boundQ;
            });
        }

        //打开模态窗口事件
        openModal.click(function () {
            //更新模态窗口的头部信息
            document.getElementById('myModalLabel1').innerHTML = window.lastStandQustion;

            document.getElementById('bqBody').innerHTML = '<div class="input-group"> <label>BQ:</label> <input name="name" ' +
                'type="text" style="width: 300px; height: 28px" autocomplete="off"> </div>';
            $('#myModal1').modal('show');
        });

        //模态框内的新增按钮事件
        $('#myModal1').on('click', '#addBq', function () {
            var sqInput = '<div class="input-group" style="margin-top: 10px"> <label>BQ:</label> <input name="name" type="text" ' +
                'style="width: 300px; height: 28px" autocomplete="off"> </div>';
            var node = document.createElement('div');
            node.innerHTML = sqInput;
            document.getElementById('bqBody').appendChild(node);
        });

        //模框内的确认按钮事件
        $('#myModal1').on('click', '#confirm1', function () {
            $('#myModal1').modal('hide');
            var boundaryQs = document.getElementById('bqBody').getElementsByTagName('input');

            var addQuestions = [];
            for (var i = 0; i < boundaryQs.length; i++) {
                if (boundaryQs[i].value != '') {
                    addQuestions.push(boundaryQs[i].value);
                }
            }

            $.ajax({
                type: 'POST',
                url: '/addquestion',
                cache: false,
                contentType: 'application/json',
                data: JSON.stringify({
                    addValue: addQuestions,
                    type: 'bq',
                    parentId: window.lastStandQId,
                    appid: window.project_name
                }),
                error: function () {
                },
                success: function (res) {
                    var results = res.data,
                        desc = res.desc;
                    if (res.status == 'true') {
                        for (var i in results) {
                            table.bootstrapTable('insertRow', {
                                index: 0,
                                row: {
                                    boundQ: results[i].content,
                                    id: results[i].recordId
                                }
                            });
                        }
                        if (desc != '') {
                            toastr.warning(desc);
                        }
                        else {
                            toastr.success('数据新增成功');
                        }
                    }
                    else {
                        toastr.error('数据新增失败');
                    }
                }
            });

        });
    };

    return oInit;
};

var EditableButtonInit = function () {
    var oInit = new Object();
    var postdata = {};
    var openModal = $('#btn_add2');
    oInit.Init = function () {
        //初始化页面上面的按钮事件
        var table = $('#tb_editable'),
            remove = $('#btn_delete2'),
            selections = [];
        $('#tb_editable').on('check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table', function () {
            remove.prop('disabled', !table.bootstrapTable('getSelections').length);
            selections = getIdSelections();
        });

        $(table).on('click-row.bs.table', function (e, row, element) {
            //bootstrap table支持5中表格的行背景色，分别是'active', 'success', 'info', 'warning', 'danger'这五种
            $('.success').removeClass('success');//去除之前选中的行的，选中样式
            $(element).addClass('success');//添加当前选中的 success样式用于区别
        });

        //批量删除按钮事件
        remove.click(function () {
            var ids = getIdSelections();
            var allData = getAllSelections();
            table.bootstrapTable('remove', {
                field: 'editQ',
                values: ids
            });
            remove.prop('disabled', true);
            $.ajax({
                type: 'POST',
                url: '/deletequestion',
                cache: false,
                contentType: 'application/json',
                data: JSON.stringify({
                    deleteValue: allData,
                    type: 'eq'
                }),
                error: function () {
                },
                success: function (res) {
                    var status = res.status;
                    if (status == 'true') {
                        toastr.success('删除数据成功');
                    } else {
                        toastr.error('删除数据失败');
                    }
                }
            });
        });

        function getIdSelections() {
            return $.map(table.bootstrapTable('getSelections'), function (row) {
                return row.editQ;
            });
        }

        function getAllSelections() {
            return $.map(table.bootstrapTable('getSelections'), function (row) {
                return row;
            });
        }

        //打开模态窗口事件
        openModal.click(function () {
            //更新模态窗口的头部信息
            document.getElementById('myModalLabel2').innerHTML = window.lastBoundQuestion;

            document.getElementById('eqBody').innerHTML = '<div class="input-group"> <label>EQ:</label> <input name="name" ' +
                'type="text" style="width: 300px; height: 28px" autocomplete="off"> </div>';
            $('#myModal2').modal('show');
        });

        //模态框内的新增按钮事件
        $('#myModal2').on('click', '#addEq', function () {
            var sqInput = '<div class="input-group" style="margin-top: 10px"> <label>EQ:</label> <input name="name" type="text" ' +
                'style="width: 300px; height: 28px" autocomplete="off"> </div>';
            var node = document.createElement('div');
            node.innerHTML = sqInput;
            document.getElementById('eqBody').appendChild(node);
        });

        //模框内的确认按钮事件
        $('#myModal2').on('click', '#confirm2', function () {
            $('#myModal2').modal('hide');
            var editableQs = document.getElementById('eqBody').getElementsByTagName('input');
            var addQuestions = [];
            for (var i = 0; i < editableQs.length; i++) {
                if (editableQs[i].value != '') {
                    addQuestions.push(editableQs[i].value);
                }
            }

            $.ajax({
                type: 'POST',
                url: '/addquestion',
                cache: false,
                contentType: 'application/json',
                data: JSON.stringify({
                    addValue: addQuestions,
                    type: 'eq',
                    parentId: window.lastBoundQId,
                    appid: window.project_name
                }),
                error: function () {
                },
                success: function (res) {
                    var results = res.data,
                        desc = res.desc;
                    if (res.status == 'true') {
                        for (var i in results) {
                            table.bootstrapTable('insertRow', {
                                index: 0,
                                row: {
                                    id: results[i].recordId,
                                    editQ: results[i].content,
                                    number: '0',
                                    class: 'EQ'
                                }
                            });
                        }
                        if (desc != '') {
                            toastr.warning(desc);
                        }
                        else {
                            toastr.success('数据新增成功');
                        }
                    }
                    else {
                        toastr.error('数据新增失败');
                    }
                }
            });

        });
    };

    return oInit;
};